<template>
  <div class="DcnBottom">
    <CodeCard v-bind="btnDesc">
      <div class="cascader_wrap">
        <div class="block">
          <span class="demonstration">默认 click 触发子菜单</span>
          <sdn-cascader v-model="value" :options="options" @change="handleChange"></sdn-cascader>
        </div>
        <div class="block">
          <span class="demonstration">hover 触发子菜单</span>
          <sdn-cascader v-model="value" :options="options" :props="{ expandTrigger: 'hover' }"
                        @change="handleChange"></sdn-cascader>
        </div>
      </div>

      <template #tip></template>
    </CodeCard>
  </div>
</template>

<script>


export default {
  components: {
    
  },
  setup() {
    let value = []
    const options = [
      {
        value: 'zhinan',
        label: '指南',
        children: [{
          value: 'shejiyuanze',
          label: '设计原则',
          children: [{
            value: 'yizhi',
            label: '一致'
          }, {
            value: 'fankui',
            label: '反馈'
          }, {
            value: 'xiaolv',
            label: '效率'
          }, {
            value: 'kekong',
            label: '可控'
          }]
        }, {
          value: 'daohang',
          label: '导航',
          children: [{
            value: 'cexiangdaohang',
            label: '侧向导航'
          }, {
            value: 'dingbudaohang',
            label: '顶部导航'
          }]
        }]
      }, {
        value: 'zujian',
        label: '组件',
        children: [{
          value: 'basic',
          label: 'Basic',
          children: [{
            value: 'layout',
            label: 'Layout 布局'
          }, {
            value: 'color',
            label: 'Color 色彩'
          }, {
            value: 'typography',
            label: 'Typography 字体'
          }, {
            value: 'icon',
            label: 'Icon 图标'
          }, {
            value: 'button',
            label: 'Button 按钮'
          }]
        }, {
          value: 'form',
          label: 'Form',
          children: [{
            value: 'radio',
            label: 'Radio 单选框'
          }, {
            value: 'checkbox',
            label: 'Checkbox 多选框'
          }, {
            value: 'input',
            label: 'Input 输入框'
          }, {
            value: 'input-number',
            label: 'InputNumber 计数器'
          }, {
            value: 'select',
            label: 'Select 选择器'
          }, {
            value: 'cascader',
            label: 'Cascader 级联选择器'
          }, {
            value: 'switch',
            label: 'Switch 开关'
          }, {
            value: 'slider',
            label: 'Slider 滑块'
          }, {
            value: 'time-picker',
            label: 'TimePicker 时间选择器'
          }, {
            value: 'date-picker',
            label: 'DatePicker 日期选择器'
          }, {
            value: 'datetime-picker',
            label: 'DateTimePicker 日期时间选择器'
          }, {
            value: 'upload',
            label: 'Upload 上传'
          }, {
            value: 'rate',
            label: 'Rate 评分'
          }, {
            value: 'form',
            label: 'Form 表单'
          }]
        }, {
          value: 'data',
          label: 'Data',
          children: [{
            value: 'table',
            label: 'Table 表格'
          }, {
            value: 'tag',
            label: 'Tag 标签'
          }, {
            value: 'progress',
            label: 'Progress 进度条'
          }, {
            value: 'tree',
            label: 'Tree 树形控件'
          }, {
            value: 'pagination',
            label: 'Pagination 分页'
          }, {
            value: 'badge',
            label: 'Badge 标记'
          }]
        }, {
          value: 'notice',
          label: 'Notice',
          children: [{
            value: 'alert',
            label: 'Alert 警告'
          }, {
            value: 'loading',
            label: 'Loading 加载'
          }, {
            value: 'message',
            label: 'Message 消息提示'
          }, {
            value: 'message-box',
            label: 'MessageBox 弹框'
          }, {
            value: 'notification',
            label: 'Notification 通知'
          }]
        }, {
          value: 'navigation',
          label: 'Navigation',
          children: [{
            value: 'menu',
            label: 'NavMenu 导航菜单'
          }, {
            value: 'tabs',
            label: 'Tabs 标签页'
          }, {
            value: 'breadcrumb',
            label: 'Breadcrumb 面包屑'
          }, {
            value: 'dropdown',
            label: 'Dropdown 下拉菜单'
          }, {
            value: 'steps',
            label: 'Steps 步骤条'
          }]
        }, {
          value: 'others',
          label: 'Others',
          children: [{
            value: 'dialog',
            label: 'Dialog 对话框'
          }, {
            value: 'tooltip',
            label: 'Tooltip 文字提示'
          }, {
            value: 'popover',
            label: 'Popover 弹出框'
          }, {
            value: 'card',
            label: 'Card 卡片'
          }, {
            value: 'carousel',
            label: 'Carousel 走马灯'
          }, {
            value: 'collapse',
            label: 'Collapse 折叠面板'
          }]
        }]
      }, {
        value: 'ziyuan',
        label: '资源',
        children: [{
          value: 'axure',
          label: 'Axure Components'
        }, {
          value: 'sketch',
          label: 'Sketch Templates'
        }, {
          value: 'jiaohu',
          label: '组件交互文档'
        }]
      }]

    function handleChange(value) {
      console.log(value)
    }


    let btnDesc = {
      title: "Cascader 级联选择器",
      describe: "当一个数据集合有清晰的层级结构时，可通过级联选择器逐级查看并选择。",
      codeBlock: `
<div class="cascader_wrap">
        <div class="block">
          <span class="demonstration">默认 click 触发子菜单</span>
          <sdn-cascader v-model="value" :options="options" @change="handleChange"></sdn-cascader>
        </div>
        <div class="block">
          <span class="demonstration">hover 触发子菜单</span>
          <sdn-cascader v-model="value" :options="options" :props="{ expandTrigger: 'hover' }"
                       @change="handleChange"></sdn-cascader>
        </div>
      </div>`,
      attrs: [
        {"name": "value / v-model", "describe": "选中项绑定值", "type": "-", "emun": "—", "default": "—"}, {
          "name": "options",
          "describe": "可选项数据源，键名可通过 Props 属性配置",
          "type": "array",
          "emun": "—",
          "default": "—"
        }, {"name": "props", "describe": "配置选项，具体见下表", "type": "object", "emun": "—", "default": "—"}, {
          "name": "size",
          "describe": "尺寸",
          "type": "string",
          "emun": "medium / small / mini",
          "default": "—"
        }, {
          "name": "placeholder",
          "describe": "输入框占位文本",
          "type": "string",
          "emun": "—",
          "default": "请选择"
        }, {
          "name": "disabled",
          "describe": "是否禁用",
          "type": "boolean",
          "emun": "—",
          "default": "FALSE"
        }, {
          "name": "clearable",
          "describe": "是否支持清空选项",
          "type": "boolean",
          "emun": "—",
          "default": "FALSE"
        }, {
          "name": "show-all-levels",
          "describe": "输入框中是否显示选中值的完整路径",
          "type": "boolean",
          "emun": "—",
          "default": "TRUE"
        }, {
          "name": "collapse-tags",
          "describe": "多选模式下是否折叠Tag",
          "type": "boolean",
          "emun": "-",
          "default": "FALSE"
        }, {
          "name": "separator",
          "describe": "选项分隔符",
          "type": "string",
          "emun": "—",
          "default": "斜杠' / '"
        }, {
          "name": "filterable",
          "describe": "是否可搜索选项",
          "type": "boolean",
          "emun": "—",
          "default": "—"
        }, {
          "name": "filter-method",
          "describe": "自定义搜索逻辑，第一个参数是节点node，第二个参数是搜索关键词keyword，通过返回布尔值表示是否命中",
          "type": "function(node, keyword)",
          "emun": "-",
          "default": "-"
        }, {
          "name": "debounce",
          "describe": "搜索关键词输入的去抖延迟，毫秒",
          "type": "number",
          "emun": "—",
          "default": "300"
        }, {
          "name": "before-filter",
          "describe": "筛选之前的钩子，参数为输入的值，若返回 false 或者返回 Promise 且被 reject，则停止筛选",
          "type": "function(value)",
          "emun": "—",
          "default": "—"
        }, {"name": "popper-class", "describe": "自定义浮层类名", "type": "string", "emun": "—", "default": "—"}],
      events: [
        {"name": "change", "describe": "当选中节点变化时触发", "params": "选中节点的值"}, {
          "name": "expand-change",
          "describe": "当展开节点发生变化时触发",
          "params": "各父级选项值组成的数组"
        }, {"name": "blur", "describe": "当失去焦点时触发", "params": "(event: Event)"}, {
          "name": "focus",
          "describe": "当获得焦点时触发",
          "params": "(event: Event)"
        }, {
          "name": "visible-change",
          "describe": "下拉框出现/隐藏时触发",
          "params": "出现则为 true，隐藏则为 false"
        }, {"name": "remove-tag", "describe": "在多选模式下，移除Tag时触发", "params": "移除的Tag对应的节点的值"}],
      methods: [
        {"name": "getCheckedNodes", "describe": "获取选中的节点", "params": "(leafOnly) 是否只是叶子节点，默认值为 false"}],
      slots: [
        {"name": "-", "describe": "自定义备选项的节点内容，参数为 { node, data }，分别为当前节点的 Node 对象和数据"}, {
          "name": "empty",
          "describe": "无匹配选项时的内容"
        }]
    };

    return {
      btnDesc,
      value,
      options,
      handleChange
    };
  },
};
</script>

<style lang="stylus">
.DcnBottom {
  .cascader_wrap {
    display flex
    justify-content space-around

    .block {
      display flex
      justify-content center
      flex-direction column

      .demonstration {
        padding-bottom 0.2rem
        color #666666
      }
    }
  }

}
</style>
